package com.zzyl.nursing.mapper;

import com.zzyl.nursing.domain.NursingProject;
import com.zzyl.nursing.domain.NursingProjectPlan;
import com.zzyl.nursing.domain.vo.NursingProjectVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * 护理项目Mapper接口
 * 
 * @author yuanjijun
 * @date 2025-07-22
 */
@Mapper
public interface NursingProjectMapper 
{
    /**
     * 查询护理项目
     * 
     * @param id 护理项目主键
     * @return 护理项目
     */
    public NursingProject selectNursingProjectById(Integer id);

    /**
     * 查询护理项目列表
     * 
     * @param nursingProject 护理项目
     * @return 护理项目集合
     */
    public List<NursingProject> selectNursingProjectList(NursingProject nursingProject);

    /**
     * 新增护理项目
     * 
     * @param nursingProject 护理项目
     * @return 结果
     */
    public int insertNursingProject(NursingProject nursingProject);

    /**
     * 修改护理项目
     * 
     * @param nursingProject 护理项目
     * @return 结果
     */
    public int updateNursingProject(NursingProject nursingProject);

    /**
     * 删除护理项目
     * 
     * @param id 护理项目主键
     * @return 结果
     */
    public int deleteNursingProjectById(Integer id);

    /**
     * 批量删除护理项目
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteNursingProjectByIds(Integer[] ids);

    @Select("select id value,name label from nursing_project where status = 1 ")
    List<NursingProjectVo> selectAll();

//TODO:为啥要加这个注解 - @Param 主要用于在方法参数中使用多个参数时，明确参数名称，以便在SQL映射文件中通过#{参数名}的方式来引用这些参数。
    int batchInsert(@Param("list") List<NursingProjectPlan> projectPlans, @Param("planId") Integer id);
}
